The inventive concept relates to memory systems and methods of operating memory systems. More particularly, the inventive concept relates to recovery code management methods capable of minimizing or significantly reducing the time required by a CPU or processor to execute a recovery code process.
Contemporary memory systems include a storage device, such as one or more flash memory devices capable of nonvolatile data storage. It is understood that execution of a read operation directed to data stored in the storage device may result in read error(s). Read errors may be caused by many different factors.
Upon detecting a read error, a memory system may execute so-called “recovery code” that is intended to correct (or “recover” from) the read error. Hereafter, the broad class of methods and processes that use one or more recovery codes, as well as execution of the recovery code will be termed a “read recovery operation.” A read recovery operation may be executed as part of, or independent from an error correction capability (ECC) provided by the memory system. The read recovery operation may be executed using firmware controlled by a Central Processing Unit (CPU) and/or processor of the memory system.
It is further understood, the storage devices like conventional NAND flash memory may use a variable “read voltage” to determine the “state” of stored data during a read operation. Most read recovery operations include an iteratively applied read operation (or “read retry operation”) that is executed with a variable read voltage. That is, a sequence of read retry operations, each using a different read voltage, may be applied during a read recovery operation until a read error is corrected. Thus, a read error may be corrected using a read retry operation including a read retry operation, and/or a general ECC capabilities of the memory system.